/**
 * 
 */
package com.p2p.trans.client.model;

import java.io.Serializable;
import java.util.Date;

import com.p2p.base.model.Money;
import com.p2p.trans.client.enums.FreezeBalanceTypeEnum;
import com.p2p.trans.client.enums.RecordModelEnum;
import com.p2p.trans.client.enums.SubTransCodeEnum;
import com.p2p.trans.client.enums.TransCodeEnum;

/**
 * @author ruiqi
 *
 */
public class TransInfo implements Serializable,Cloneable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 6139332401710725277L;
	private Long id;
	private Long transLogId;
	private String transDate;
	private String outDate;
	private Date transDt;
	private TransCodeEnum transCode;
	private Money transAmount;
	private String transCurrency;
	private FreezeBalanceTypeEnum freezeType;
	private int accountOutType;
	private String transAccountOut;
	private int accountInType;
	private String transAccountIn;
	private String transOperator;
	//private String transChannel;
	private String transInstitution;
	private String transOutOrderNo;
	private String transMemo;
	private SubTransCodeEnum subTransCode;
	
	private String relatedTransId;
	private String voucherId;
	private String transOutBizNo;
	private String outBatchNo;
	private RecordModelEnum debitRecordModel;
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getTransDate() {
		return transDate;
	}
	public void setTransDate(String transDate) {
		this.transDate = transDate;
	}
	public String getOutDate() {
		return outDate;
	}
	public void setOutDate(String outDate) {
		this.outDate = outDate;
	}
	public Date getTransDt() {
		return transDt;
	}
	public void setTransDt(Date transDt) {
		this.transDt = transDt;
	}
	public TransCodeEnum getTransCode() {
		return transCode;
	}
	public void setTransCode(TransCodeEnum transCode) {
		this.transCode = transCode;
	}
	public Money getTransAmount() {
		return transAmount;
	}
	public void setTransAmount(Money transAmount) {
		this.transAmount = transAmount;
	}
	public String getTransCurrency() {
		return transCurrency;
	}
	public void setTransCurrency(String transCurrency) {
		this.transCurrency = transCurrency;
	}
	public int getAccountOutType() {
		return accountOutType;
	}
	public void setAccountOutType(int accountOutType) {
		this.accountOutType = accountOutType;
	}
	public String getTransAccountOut() {
		return transAccountOut;
	}
	public void setTransAccountOut(String transAccountOut) {
		this.transAccountOut = transAccountOut;
	}
	public int getAccountInType() {
		return accountInType;
	}
	public void setAccountInType(int accountInType) {
		this.accountInType = accountInType;
	}
	public String getTransAccountIn() {
		return transAccountIn;
	}
	public void setTransAccountIn(String transAccountIn) {
		this.transAccountIn = transAccountIn;
	}
	public String getTransOperator() {
		return transOperator;
	}
	public void setTransOperator(String transOperator) {
		this.transOperator = transOperator;
	}
	/*public String getTransChannel() {
		return transChannel;
	}
	public void setTransChannel(String transChannel) {
		this.transChannel = transChannel;
	}*/
	public String getTransInstitution() {
		return transInstitution;
	}
	public void setTransInstitution(String transInstitution) {
		this.transInstitution = transInstitution;
	}
	public String getTransOutOrderNo() {
		return transOutOrderNo;
	}
	public void setTransOutOrderNo(String transOutOrderNo) {
		this.transOutOrderNo = transOutOrderNo;
	}
	public String getTransMemo() {
		return transMemo;
	}
	public void setTransMemo(String transMemo) {
		this.transMemo = transMemo;
	}
	public SubTransCodeEnum getSubTransCode() {
		return subTransCode;
	}
	public void setSubTransCode(SubTransCodeEnum subTransCode) {
		this.subTransCode = subTransCode;
	}
	/*public String getFlagCancel() {
		return flagCancel;
	}
	public void setFlagCancel(String flagCancel) {
		this.flagCancel = flagCancel;
	}*/
	public String getRelatedTransId() {
		return relatedTransId;
	}
	public void setRelatedTransId(String relatedTransId) {
		this.relatedTransId = relatedTransId;
	}
	public String getVoucherId() {
		return voucherId;
	}
	public void setVoucherId(String voucherId) {
		this.voucherId = voucherId;
	}
	public Long getTransLogId() {
		return transLogId;
	}
	public void setTransLogId(Long transLogId) {
		this.transLogId = transLogId;
	}
	public FreezeBalanceTypeEnum getFreezeType() {
		return freezeType;
	}
	public void setFreezeType(FreezeBalanceTypeEnum freezeType) {
		this.freezeType = freezeType;
	}
	public String getOutBatchNo() {
		return outBatchNo;
	}
	public void setOutBatchNo(String outBatchNo) {
		this.outBatchNo = outBatchNo;
	}
	public RecordModelEnum getDebitRecordModel() {
		return debitRecordModel;
	}
	public void setDebitRecordModel(RecordModelEnum debitRecordModel) {
		this.debitRecordModel = debitRecordModel;
	}
	
	
	public String getTransOutBizNo() {
		return transOutBizNo;
	}
	public void setTransOutBizNo(String transOutBizNo) {
		this.transOutBizNo = transOutBizNo;
	}
	public TransInfo clone() throws CloneNotSupportedException {
		// TODO Auto-generated method stub
		TransInfo o = (TransInfo) super.clone();
		
		//o.transCode = new TransInfo().
		return o;
		
	}
	
	public static void main(String[] args) {
		TransInfo transInfo = new TransInfo();
		transInfo.setTransCode(TransCodeEnum.TXCODE_CHARGE);
		try {
			TransInfo transInfo2 = transInfo.clone();
			transInfo2.setTransCode(TransCodeEnum.TXCODE_DEPOSIT);
			
			System.out.println(transInfo.getTransCode().name());
			System.out.println(transInfo2.getTransCode().name());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
}
